Aspects of the present specification relate to the field of data processing. More specifically, aspects of the present specification relate to the use of an auxiliary execution unit in a high frequency processor to execute a computer program.
Nearly all computer systems have a central processing unit (CPU) that includes at least one execution unit. An execution unit is a collection of hardware capable of carrying out a defined set of operations on binary operands provided by a computer program instruction. Modern computer architectures commonly utilize multiple execution units to carry out operations on different types of digital data, such as fixed-point data and floating point data. In fixed-point binary data, numbers are represented by a fixed number of significant digits with a decimal point at a fixed location. By contrast, floating point binary data uses a fixed number of significant digits with a floating decimal point and an exponential scalar.
Because the hardware required to perform a set of operations on fixed-point binary operands is not interchangeable with the hardware required to perform the same set of operations on floating point binary operands, the use of separate execution units for each type of data reduces the dependency on software to perform arithmetic functions, thereby speeding up the execution and completion of heterogeneous instructions. Additionally, in high-speed computer applications, the physical size of execution units can be a critical determinant of the efficiency of the computer applications. Thus, two smaller execution units may be desirable over a single larger execution unit.
For example, many high-frequency computer designs include a primary execution unit for carrying out operations on fixed-point binary data and an auxiliary execution unit for carrying out operations on floating point binary numbers. For a computer program that includes a mixture of both fixed-point integer instructions and floating point instructions, the computer system must coordinate operations of the primary and auxiliary execution units such that the primary execution unit provides the results to fixed-point instructions and the auxiliary execution unit provides the results for the floating point instructions of the program.